﻿@{
    int? calendarId = Page.CalendarId;
    dynamic calendarInfo = null;

    if (calendarId.HasValue) {
        // 달력에 대한 정보를 봅니다.
        calendarInfo = Calendar.GetUserCalendar(WebSecurity.CurrentUserId, calendarId.Value);
        
        // 달력이 존재하지 않는 경우.
        if (calendarInfo == null) {
            RequestData.SetValue("InfoPaneTitle", "잘못된 달력 ID");
            return;
        }

        RequestData.SetValue("InfoPaneTitle", "달력:  " + calendarInfo.Name);
    }

    if (IsPost) {
        string name = Page.Name;

        // 사례 이름의 색만 업데이트될 수 있습니다. == null
        if (name != null && (name.Length < 4 || name.Length > 15)) {
            ModelState.AddError("name", "달력 이름은 4자에서 15자 사이여야 합니다.");
        }

        var color = Page.Color;
        if (String.IsNullOrEmpty(color)) {
             ModelState.AddError("color", "달력 색을 지정해야 합니다.");
        }
        else if (!ColorHelper.IsValidColor(color)) {
            ModelState.AddError("color", "밝고 유효한 색을 지정해야 합니다.");
        }

        if (ModelState.IsValid) {
            if (calendarId.HasValue) {
                // 달력 색 업데이트
                if (name == null) {
                    Calendar.UpdateCalendarColor(WebSecurity.CurrentUserId, calendarId.Value, color);
                } else {
                    // 달력 이름 및 색 업데이트
                    Calendar.UpdateCalendar(WebSecurity.CurrentUserId, calendarId.Value, name, color);
                }
            } else {
                calendarId = Calendar.CreateCalendar(WebSecurity.CurrentUserId, name, color);
            }
            Response.Redirect("~/Calendar/Info/" + calendarId);
        }
    }
}

@Html.ValidationSummary()
<form method="post" action="">
    <table class="info">
        <tr>
            <td><label for="name">달력 이름</label></td>
            <td>
                @if (calendarId.HasValue) {
                    if (calendarInfo.Permissions == (int)Permission.Own) {
                        <input type="text" id="name" name="name" value="@calendarInfo.Name" />
                    } else {
                        @calendarInfo.Name
                    }
                } else {
                    <input type="text" id="name" name="name" value="" />
                }
            </td>
        </tr>
        <tr>
            <td><label for="jqueryColorField">달력 색</label></td>
            <td>
                <input type="text" id="jqueryColorField" name="color" value="@(calendarId.HasValue ? calendarInfo.Color : "")" /> 
                <span id="jqueryColorSwatch" class="swatch width100 rounded-top rounded-bottom" style="@(calendarId.HasValue ? "background-color: @(calendarInfo.Color);" : "") border-color: black;">&nbsp;</span>
            </td>
        </tr>
        @if (calendarId.HasValue){
            <tr>
                <td>Created By</td>
                <td>@UserHelper.GetUser(calendarInfo.Creator).Email</td>
            </tr>
        }
        <tr>
            <td colspan="2" id="submit"><input type="submit" name="submit" value="@(calendarId.HasValue ? "저장" : "만들기")" /></td>
        </tr>
    </table>
</form>

